package com.itmentu.core;

import org.apache.ibatis.jdbc.SQL;

import java.util.List;

/**
 * @Author：http://www.itmentu.com
 * @date： 2021/12/5 16:25
 * @Description：
 ***/
public class DynamicSQL {


    /**
     * 通用修改
     */
    public String update(Object instance) throws Exception {
        SQL sql = new SQL();
        //1)获取接口Class
        Class<?> clazz = instance.getClass();

        //2)指定表名 update tableName
        sql.UPDATE(ClassUtil.tableName(clazz));

        //3)组装SQL  update tableName set column1=#{xx} where id=#{xx}
        sql.SET(ClassUtil.forUpdate(instance)).WHERE(ClassUtil.tableId(clazz));

        //4)返回SQL
        return sql.toString();
    }

    /**
     * 通用添加
     */
    public String add(Object instance) throws Exception {
        SQL sql = new SQL();
        //1)获取接口Class
        Class<?> clazz = instance.getClass();

        //2)指定表名 insert into tableName
        sql.INSERT_INTO(ClassUtil.tableName(clazz));

        //3)组装SQL  insert into tableName(colum1,column2) values(#{xx},#{yy})
        List<String[]> lists = ClassUtil.fieldNames(instance);
        sql.INTO_COLUMNS(lists.get(0)).INTO_VALUES(lists.get(1));

        //4)返回SQL
        return sql.toString();
    }
}
